a=["a","b","c","d"]a.rotate#=>["b","c","d","a"]#rotate是Ruby1.9中Array的一个方法。我想要Ruby1.8.7中的这个功能。什么是理想的代码? 最佳答案 如果你require'backports/1.9.2/array/rotate',您将在旧版本的Ruby中获得Array#rotate和rotate!。无论哪种方式,您都可以避免重新发明轮子,更重要的是,您可以获得通过RubySpec的实现的优势。它将适用于所有极端情况并确保与Ruby1.9的兼容性。例如,给出的两个答案
我正在尝试用ruby初始化一个单例。这是一些代码:classMyClassattr_accessor:var_i_want_to_init#singleton@@instance=MyClass.newdefself.instance@@instanceenddefinitialize#tried1.initialize,2.new,3.self.initialize,4.self.newputs"I'mbeinginitialized!"@var_i_want_to_init=2endend问题是从未调用初始化,因此从未初始化单例。我尝试将init方法命名为initialize、
我一直在看maxmethod在Ruby的Enumerable混合(v2.4.1)。这是一个相当简单的方法,但是当存在重复项时它如何排序项目有点令人困惑。例如:x=[1,2,3,4,5,6,7,8,9]x.max{|a,b|a%2b%2}=>110.times{|y|px.max(y){|a,b|a%2b%2}}[][1][1,7]#whyis7thenextelementafter1?[3,1,5]#whynomore7?[7,3,1,5]#7isnowfirst[9,7,3,1,5][9,7,3,1,5,6][9,7,3,1,5,4,6][9,7,3,1,5,2,4,6][9,7,5